﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using Bankeren.Engine;
using Bankeren.Engine.Cards;

namespace Bankeren.Service
{
    public interface IBankerenCallback
    {
        [OperationContract(IsOneWay = true)]
        void Welcome(int seat, Dictionary<int, PlayerInfo> players);
        [OperationContract(IsOneWay = true)]
        void PlayerJoined(int seat, PlayerInfo info);
        [OperationContract(IsOneWay = true)]
        void PlayerInfoChanged(int seat, PlayerInfo info);
        [OperationContract(IsOneWay = true)]
        void PlayerLeft(int seat);
        [OperationContract(IsOneWay = true)]
        void GameStarted();
        [OperationContract(IsOneWay = true)]
        void DealCards(List<Card> cards);
        [OperationContract(IsOneWay = true)]
        void RoundStarted(int roundNumber, int numCards, int dealerSeat, Card trump);
        [OperationContract(IsOneWay = true)]
        void Bids(Dictionary<int, int> bids);
        [OperationContract(IsOneWay = true)]
        void TrickStarted(int trickNumber);
        [OperationContract(IsOneWay = true)]
        void Turn(int seat, Suit followSuit);
        [OperationContract(IsOneWay = true)]
        void CardPlayed(int seat, Card card);
        [OperationContract(IsOneWay = true)]
        void TrickEnded(int winner);
        [OperationContract(IsOneWay = true)]
        void RoundEnded(Dictionary<int, int> points);
        [OperationContract(IsOneWay = true)]
        void GameEnded(int winner);
        [OperationContract(IsOneWay = true)]
        void Chat(int seat, string message);
        [OperationContract(IsOneWay = true)]
        void ServerStopped(string message);
    }
}
